package com.chinairi.mall.service;

import com.chinairi.mall.controller.viewobject.OrderServiceTransportVO;
import com.chinairi.mall.controller.viewobject.ProjectPlanPickingOrderVO;
import com.chinairi.mall.controller.viewobject.ProjectPlanPickingVO;
import com.chinairi.mall.controller.viewobject.ProjectPlanReqVO;
import com.chinairi.mall.model.OrderServiceTransport;
import com.chinairi.mall.model.ProjectPlanPicking;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * <p>
 * 领料单 服务类
 * </p>
 *
 * @author Webgasd
 * @since 2020-10-13
 */
public interface IProjectPlanPickingService extends IService<ProjectPlanPicking> {
    /**
     * 添加领料单
     * @param projectPlanPickingVo
     */
    void add(ProjectPlanPickingVO projectPlanPickingVo);

    /**
     * 筛选回传的物料list
     * @param projectPlanReqVO
     * @return ProjectPlanPickingVO
     */
    ProjectPlanPickingVO getCanPickList(ProjectPlanReqVO projectPlanReqVO);

    /**
     * 获取list
     * @return
     */
    List<ProjectPlanPicking> getList();

    /**
     * 根据某个领料单id获取领料单详细订单
     * @param pickId
     * @return
     */
    ProjectPlanPickingOrderVO getOneByPickId(String pickId);

    /**
     * 查看当前领料单下的所有物流服务
     * @param pickId
     * @return
     */
    List<OrderServiceTransport> getOrderServiceTransportList(String pickId);

    /**
     * 查看当前物流服务下的所有物料及其信息。
     * @param ostId
     * @return
     */
    OrderServiceTransportVO getOrderServiceInfo(String ostId);

    /**
     * 获取服务详情
     * @param projectPlanPickingOrderVo
     * @return
     */
    ProjectPlanPickingOrderVO getServiceInfo(ProjectPlanPickingOrderVO projectPlanPickingOrderVo);

    /**
     * 添加一个领料的物流订单
     * @param projectPlanPickingOrderVo
     */
    void addPickOrder(ProjectPlanPickingOrderVO projectPlanPickingOrderVo);

    /**
     * 撤销不通过的订单
     * @param beforeOrderId
     */
    void deleteServiceOrder(String beforeOrderId);

    /**
     * 重新选择服务
     * @param projectPlanPickingOrderVo
     * @return
     */
    ProjectPlanPickingOrderVO updateServiceOfPickOrder(ProjectPlanPickingOrderVO projectPlanPickingOrderVo);
}
